Python之路 - 列表
介绍 🍀
列表是我们以后最常用的数据类型之一 , 通过列表可以对数据实现最方便的存储、修改等操作
列表是可变的、有序的 , 基本操作有 : 创建、访问、切片、追加、插入、修改、删除、扩展、拷贝、排序、翻转、等
列表相当于其他语言中的数组
创建 🍀
1 | # 创建一个列表 |
访问 🍀
1 | #1.通过索引查找元素 |
获取下标
1 | # 创建一个列表 |
统计
1 | # 创建一个列表 |
切片 🍀
1 | # 创建一个列表 |
追加 🍀
1 | # 创建一个列表 |
注意,对列表的任何修改都是在原列表上进行的.而且所有方法都不会返回任何值.所以下面的例子返回None:
1 | >>> name = ['jesse','Lyon','alex','jerry'] |
插入 🍀
1 | name = ['jesse','Lyon','alex','jerry'] |
修改 🍀
1 | # 创建一个列表 |
删除 🍀
1 | name = ['jesse','Lyon','alex','jerry'] |
扩展 🍀
1 | # 创建一个列表 |
拷贝 🍀
1 | # 创建一个列表 |
注意 : 在python2.7中列表的内置方法是没有copy这个方法的 , 这是在python3后加的 , 并且python3也只有有copy (浅copy) 这一个方法 , 用深copy需要我们导入copy模块 , 即 import copy
深浅拷贝 🍀
以下情况为浅copy
- 赋值法: l2 = l1
1 | l1 = ['jesse','huang','alex',[ 'name','age',1,2],{"job":'IT',"company":'dwd'}] |
以下情况为中等copy
- copy()方法: l2 = l1.copy()
- 分片法: l2 = l1[:]
1 | l1 = ['jesse','huang','alex',[ 'name','age',1,2],{"job":'IT',"company":'dwd'}] |
以下情况为深copy
**用copy模块的deepcopy方法
1 | import copy |
从以上结果,总结这3种的区别:
对于浅copy:
- 1.修改原列表的任何元素,都会影响新列表.
- 2.源列表和新列表关联到同一个内存地址空间
对于中等copy:
- 1.修改原列表内的可变元素(例如原列表本身,原列表的子列表,字典等可变元素)则会影响新列表.
- 2.修改原列表内的不可变元素(例如字符串),则不会影响到新列表
- 3.个列表本身拥有不同的内存地址空间,但是,列表内的可变子元素(子列表,字典等)还是会关联到同一个内存地址.
对于深copy:
- 1.修改原列表内的任何元素,都不会影响到新列表
- 2.列表本身,以及列表内的所有子元素,都关联到不同的内存地址
排序&翻转 🍀
1 | # 创建一个列表 |
所有方法如下 :
1 | | append(...) |
练习题 🍀
1 |
|
- 3.将下列列表中奇数索引的元素删除
1 | l1 = [00,11,22,33,44,55,66] |